package com.eddy.project.easyexcel;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;

import java.util.ArrayList;

public class SimpleWriter {

    public static void main(String[] args) {
        simpleWrite();
    }

    /**
     * 最简单的写
     * <p>
     * 1. 创建excel对应的实体对象 参照{@link UserInfo}
     * <p>
     * 2. 直接写即可
     */
    public static void simpleWrite() {
        ArrayList<UserInfo> userInfos = new ArrayList<>();

        for (int i = 0; i < 4; i++) {
            UserInfo userInfo = new UserInfo();
            userInfo.setPlanetCode("1");
            userInfo.setUsername("eddy");
            userInfos.add(userInfo);
        }

        // 注意 simpleWrite在数据量不大的情况下可以使用（5000以内，具体也要看实际情况），数据量大参照 重复多次写入

        // 写法1 JDK8+
        // since: 3.0.0-beta1
//        String fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
        String fileName = "D:\\ideaprojects\\project-backend\\src\\main\\resources\\writeExcel.xlsx";
        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, UserInfo.class)
                .sheet("模板")
                .doWrite(() -> {
                    // 分页查询数据
                    return userInfos;
                });

        // 写法2
//        fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, UserInfo.class).sheet("模板").doWrite(userInfos);

        // 写法3
//        fileName = TestFileUtil.getPath() + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写
        try (ExcelWriter excelWriter = EasyExcel.write(fileName, UserInfo.class).build()) {
            WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
            excelWriter.write(userInfos, writeSheet);
        }
    }
}
